package com.lanou3g.code0412.inter;

import java.util.ArrayList;

/**
 * Created by dllo on 18/4/12.
 */

//推荐书:阿里巴巴JAVA开发手册
//一个类用了另一个类,说明两个类耦合在了一起
    //接口可以解耦;
public class Computer {

    /*
    * 接口可以当做一个数据类型来定义变量,就好像一个类一样
    * 我们心里清晰的知道,使用的这个对象,一定是接口的实现类,因为接口中只有抽象方法,是不可能new出来的
    * 即:类似于 USB usb = new UDisk();这样的代码,就"好像"USB是UDisk()的父类一样去使用,即我们可以用接口
    * 类型,指向实际对象,也可以叫做父类引用指向子类对象(虽然他们没有父子关系)(没有父子关系的多态)
    *
    *
    * 接口是java中弥补限制多继承创建的
    * */

    private USB usb;
    private  AS ads;


    public AS getAds() {
        return ads;
    }

    public void setAds(AS ads) {
        this.ads = ads;
    }

    //private String data ="这是电脑的数据";
    private ArrayList<String> datas = new ArrayList<>();


    public USB getUsb() {
        return usb;
    }

    public void setUsb(USB usb) {
        this.usb = usb;
    }

    public void getDataFromUSB(){

        String data =  usb.sendData();
        usb.receiveData(data);
        String da = ads.sendHHH();
        this.datas.add(data);
        this.datas.add(da);
        this.datas.add(data);
        this.datas.add(data);

    }

    public void showDatas(){
        for (String data : datas){
            System.out.println(data);
        }

    }

}


//fina 不允许子类覆写
//abstract 子类必须覆写
// final 和abstract 永远不会同时出现